package com.jsb.laundry.service;

import com.jsb.laundry.model.entity.CapitalAccount;
import com.jsb.laundry.model.entity.CapitalAccountLog;
import com.jsb.laundry.model.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserLotteryService {
    /**
     * 抽奖列表
     *
     * @return
     */
    List<UserLotteryPrizeListVo> list();
    /**
     * 用户信息
     * @return
     */
    UserLotteryListVO findByUserLotteryNum(String userId);
    /**
     * 减去抽奖次数
     * @param num
     * @param userId
     * @return
     */
    int updateNumberSub(@Param("num")int num, @Param("userId")String userId);

    /**
     * 加上
     * @param num
     * @param userId
     * @return
     */
    int updateNumberAdd(@Param("num")int num,@Param("userId")String userId);

    /**
     * 添加抽奖记录
     * @param prizeId
     * @param userId
     * @return
     */
    int addLotteryRecords(@Param("prizeId")String prizeId,@Param("userId")String userId,@Param("orderId")String orderId);
    /**
     * 减去奖品表数量
     * @param prizeNum
     * @param id
     * @return
     */
    int updatePrizeNumSub(@Param("prizeNum")int prizeNum,@Param("id")String id);
    /**
     * 新增已结算日志
     * @param capitalAccountLog
     * @return
     */
    int capitalAccountLogadd  (CapitalAccountLog capitalAccountLog);
    /**
     * 查询改奖品多少钱
     * @param id
     * @return
     */
    int findByPrizeMoney(String id);
    /**
     * 查询资金账户基本信息
     * @param thirdpartId
     * @param type
     * @return
     */
    CapitalAccount capitalAccountInfo(@Param("thirdpartId")String thirdpartId, @Param("type") String type);
    /**
     * 更新已结算
     * @param amount
     * @param id
     * @return
     */
    int updateDepositSub(@Param("amount")int amount, @Param("id") String id);
    int updateDepositAdd(@Param("amount")int amount, @Param("id") String id);

    /**
     * 抽奖邀请人人加次数
     * @param userId
     * @param num
     * @return
     */
    int updUserLotteryNum(@Param("userId") String userId, @Param("num") int num);

    /**
     * 抽奖邀请人邀请被邀请人
     * @param userId
     * @param invitee
     * @return
     */
    int addUserLotteryInvitation(@Param("userId") String userId, @Param("invitee") String invitee);

    /**
     * 抽奖邀请途径加次数
     * @param userId
     * @param access
     * @param obtainedTimes
     * @return
     */
    int addUserLotteryRecordRoad(@Param("userId") String userId, @Param("access") String access, @Param("accessType")String accessType,@Param("obtainedTimes") int obtainedTimes);

    /**
     * 注册后添加到抽奖表
     * @param userId
     * @return
     */
    int addUserLotteryInfo(String userId);
    /**
     * 抽奖中奖列表
     * @return
     */
    List<UserLuckDrawAwardListVo> userLuckyDrawAwardList();
    /**
     * 邀请人计数
     * @param userId
     * @return
     */
    UserLuckyDrawAwardCountVo userLuckyDrawAwardCount(String userId);
    /**
     * 分享朋友圈列表次数查询
     * @param userId
     * @param startTime
     * @param endTime
     * @return
     */
    int findByLotteryUserCount(@Param("userId")String userId,@Param("startTime")String startTime,@Param("endTime")String endTime);

    /**
     * 添加分享朋友圈次数
     * @param userId
     * @param num
     * @return
     */
    int addLotteryUser(@Param("userId")String userId,@Param("num")int num);
    /**
     * 查询用户抽奖次数
     * @param userId
     * @return
     */
    int numBerLotteryDraws(String userId);
    /**
     * 已结算
     *
     * @param userId
     * @return
     */
    List<CapitalAccountUnstLogListVo> capitalAccountLogList(String userId);
    /**
     * 根据骑手id查询骑手手机号
     * @param userId
     * @return
     */
    String findByPhone(String userId);

    /**
     * 查询c端是否存在该手机号
     * @param userPhone
     * @return
     */
    int findByUserPhone(String userPhone);
    /**
     * 根据手机号查询userId
     * @param userPhone
     * @return
     */
    String findByUserId(String userPhone);
    /**
     * 活动规则
     * @return
     */
    List<FindByRuleVo> findByRule();
}
